#include "pch.h"
#include "EMailProcessor.h"




const QString EMailProcessor::m_name        = "EMail Processor";
const QString EMailProcessor::m_version     = "0.1a";
const QString EMailProcessor::m_description = "This Data Processor looks for email addresses within web pages and stores them in the result";




EMailProcessor::EMailProcessor()
	: m_enabled( true )
	, m_rx( "([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)" )
{}
///////////////////////////////////////////////////////////////////////////////////////////////////




QString EMailProcessor::name() const
{
	return m_name;
}
///////////////////////////////////////////////////////////////////////////////////////////////////

QString EMailProcessor::version() const
{
	return m_version;
}
///////////////////////////////////////////////////////////////////////////////////////////////////

QString EMailProcessor::description() const
{
	return m_description;
}
///////////////////////////////////////////////////////////////////////////////////////////////////




void EMailProcessor::process( const Reply &reply )
{
	QString str = reply.content();

	int offset = 0;
	while( (offset = m_rx.indexIn( str, offset )) != -1 && m_rx.numCaptures() >= 2 )
	{
		offset += m_rx.matchedLength();

		m_emails << m_rx.cap( 0 );
	}
}
///////////////////////////////////////////////////////////////////////////////////////////////////








void EMailProcessor::enable()
{
	m_enabled = true;
}
///////////////////////////////////////////////////////////////////////////////////////////////////

void EMailProcessor::disable()
{
	m_enabled = false;
}
///////////////////////////////////////////////////////////////////////////////////////////////////




bool EMailProcessor::enabled() const
{
	return m_enabled;
}
///////////////////////////////////////////////////////////////////////////////////////////////////

bool EMailProcessor::disabled() const
{
	return !m_enabled;
}
///////////////////////////////////////////////////////////////////////////////////////////////////





PluginRoot *createPlugin()
{
	return new EMailProcessor();
}
///////////////////////////////////////////////////////////////////////////////////////////////////

void releasePlugin( PluginRoot *object )
{
	delete object;
}
///////////////////////////////////////////////////////////////////////////////////////////////////
